home *** CD-ROM | disk | FTP | other *** search
/ Fritz: All Fritz / All Fritz.zip / All Fritz / FILES / PROGMISC / PCSSP.LZH / PC-SSP.ZIP / POLYSPTP.ZIP / DLEPS.FOR < prev    next >
Text File  |  1985-11-29  |  2KB  |  62 lines

  1. C
  2. C     ..................................................................
  3. C
  4. C        SUBROUTINE DLEPS
  5. C
  6. C        PURPOSE
  7. C           COMPUTES THE VALUE OF AN N-TERM EXPANSION IN LEGENDRE
  8. C           POLYNOMIALS WITH COEFFICIENT VECTOR C FOR ARGUMENT VALUE X.
  9. C
  10. C        USAGE
  11. C           CALL DLEPS(Y,X,C,N)
  12. C
  13. C        DESCRIPTION OF PARAMETERS
  14. C           Y     - RESULT VALUE
  15. C                   DOUBLE PRECISION VARIABLE
  16. C           X     - ARGUMENT VALUE
  17. C                   DOUBLE PRECISION VARIABLE
  18. C           C     - COEFFICIENT VECTOR OF GIVEN EXPANSION
  19. C                   COEFFICIENTS ARE ORDERED FROM LOW TO HIGH
  20. C                   DOUBLE PRECISION VECTOR
  21. C           N     - DIMENSION OF COEFFICIENT VECTOR C
  22. C
  23. C        REMARKS
  24. C           OPERATION IS BYPASSED IN CASE N LESS THAN 1
  25. C
  26. C        SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED
  27. C           NONE
  28. C
  29. C        METHOD
  30. C           DEFINITION
  31. C           Y=SUM(C(I)*P(I-1,X), SUMMED OVER I FROM 1 TO N).
  32. C           EVALUATION IS DONE BY MEANS OF UPWARD RECURSION
  33. C           USING THE RECURRENCE EQUATION FOR LEGENDRE POLYNOMIALS
  34. C           P(N+1,X)=2*X*P(N,X)-P(N-1,X)-(X*P(N,X)-P(N-1,X))/(N+1).
  35. C
  36. C     ..................................................................
  37. C
  38.       SUBROUTINE DLEPS(Y,X,C,N)
  39. C
  40.       DIMENSION C(1)
  41.       DOUBLE PRECISION C,Y,X,H0,H1,H2
  42. C
  43. C        TEST OF DIMENSION
  44.       IF(N)1,1,2
  45.     1 RETURN
  46. C
  47.     2 Y=C(1)
  48.       IF(N-2)1,3,3
  49. C
  50. C        INITIALIZATION
  51.     3 H0=1.D0
  52.       H1=X
  53. C
  54.       DO 4 I=2,N
  55.       H2=X*H1
  56.       H2=H2-H0+H2-(H2-H0)/DFLOAT(I)
  57.       H0=H1
  58.       H1=H2
  59.     4 Y=Y+C(I)*H0
  60.       RETURN
  61.       END
  62.